home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 24
/
AACD 24.iso
/
AACD
/
Online
/
netspeechd
/
speechd.s
< prev
Wrap
Text File
|
2001-07-31
|
12KB
|
651 lines
; netSpeechD by (c) Cyborg 2001
;
; (c) 1999 Cyborg
IFND Konstanten_Flag
Konstanten_Flag=1
Endif
Mode_New=1006
Mode_Old=1005
Offset_Begin=-1
Offset_End=1
Offset_Current=0
Access_Read=-2
Access_Write=-1
DosTrue=-1
DosFalse=0
True=Dostrue
False=DosFalse
NM_Title=1
NM_Item=2
NM_SUB=3
NM_barlabel=-1
MENU_IMAGE=128
IM_ITEM=NM_ITEM!MENU_IMAGE
IM_SUB=NM_SUB!MENU_IMAGE
NM_END=0
NM_IGNORE=64
MENUENABLED=1
NM_MENUDISABLED=MENUENABLED
Itemenabled=$10
NM_ITEMDISABLED=ITEMENABLED
Commseq=$4
NM_COMMANDSTRING=COMMSEQ
Itemtext=$2
HighFlags=$c0
NM_FLAGMASK=~(COMMSEQ!ITEMTEXT!HIGHFLAGS)
NM_FLAGMASK_V39=~(ITEMTEXT!HIGHFLAGS)
Null=0
IncDir "Sys:Coder/"
Include "Preass/Konstanten.inc"
Include "Preass/ASL_lib.inc"
Include "Preass/intuition.inc"
Include "Include/Guienv.i"
Include "Include/Libraries/gadtools.i"
Main:
Include "preass/Startup.i"
Jsr Openlibs
Tst.l D0
Beq Mainende
Jsr START
jsr freeremmalloc
Mainende:
jsr Closelibs
Move.l Error,d0
tst.l d0
beq .l1
jmp ErrorHandling
.l1: Rts
sockaddr_in.sin_len=0
sockaddr_in.sin_family=1
sockaddr_in.sin_port=2
sockaddr_in.sin_addr=4
sockaddr_in.sin_zero=8
Sockaddr.SA_Len=0
Sockaddr.SA_Family=1
Sockaddr.SA_Data=2
Hostent.H_name=0
Hostent.h_aliases=4
Hostent.h_addrtype=8
Hostent.h_length=12
Hostent.H_addr_list=16
servent.s_name=0
servent.s_aliases=4
servent.s_port=8
servent.s_proto=10
AF_INET=2
INADDR_ANY=0
Sock_STREAM=1
SOCK_DGRAM=2
FIONBIO=$8004667e
GetSigs:
Move.l ExecBase,a6
Move.l #0,d0
Move.l #0,d1
Jsr SetSignal(a6)
Move.l D0,Signals
Move.l Signals,d0
And.l #$F000,d0
Move.l D0,Signals
Move.l Signals,d0
RTS
FillBuffer:
subq.l #1,d1
.l1:move.b d0,(a0)+
dbra d1,.l1
rts
Start:
Move.l #21846,d0
Move.l D0,UsePort
lea Filename,a1
Lea _____name000,a0
.Name001:Move.b (a0)+,d0
Move.b D0,(a1)+
Cmpi.b #0,d0
Bne .Name001
Jsr GetFilename
Cmp.l #0,d0
Bne .pre0000
Bra .pre0001
.pre0000:
lea Filename,a5
Jsr asc2zahl
Move.l D0,UsePort
.Pre0001:
lea Portname,a1
Lea speechdname001,A0
.Name002:Move.b (a0)+,d0
Move.b D0,(a1)+
Cmpi.b #0,d0
Bne .Name002
lea -1(a1),A1
Lea Filename,a0
.Name003:Move.b (a0)+,d0
Move.b D0,(a1)+
Cmpi.b #0,d0
Bne .Name003
Move.l ExecBase,a6
Move.l Portname,a1
Jsr FindPort(a6)
Cmp.l #0,d0
Bne .pre0002
Bra .pre0003
.pre0002:
Move.l DOSBase,a6
Move.l #Dname003,d1
Move.l #nullt,d2
Jsr vpf(a6)
RTS
.Pre0003:
Move.l rot3dbase,a6
Move.l Portname,a0
Jsr PortUp(a6)
Move.l D0,MPort
Cmp.l #0,d0
Beq .pre0004
Bra .pre0005
.pre0004:
Move.l DOSBase,a6
Move.l #speechd_Port_NICHT_VERFname004,d1
Move.l #nullt,d2
Jsr vpf(a6)
Move.l #0,d0
RTS
.Pre0005:
Moveq.l #$0,d0
Move.l D0,DeineNummer
Move.l DOSBase,a6
Move.l #speechd_gestartetxnname005,d1
Move.l #nullt,d2
Jsr vpf(a6)
Move.l BSDSocketBase,a6
Move.l #AF_INET,d0
Move.l #SOCK_DGRAM,d1
Move.l #0,d2
Jsr TCP_Socket(a6)
Move.l D0,socket
Cmp.l #-1,d0
Bne .pre0006
Bra .pre0007
.pre0006:
lea sockaddr_in,A0
Lea sockaddr_in.sin_family(a0),a0
Move.l #AF_Inet,d0
Move.b d0,(A0)
lea sockaddr_in,A0
Lea sockaddr_in.sin_port(a0),a0
Move.l UsePort,d0
Move.w d0,(A0)
lea sockaddr_in,A0
Lea sockaddr_in.sin_addr(a0),a0
Move.l #INADDR_ANY,(a0)
lea sockaddr_in,A0
Lea sockaddr_in.sin_len(a0),a0
Move.l #16,d0
Move.b d0,(A0)
Move.l BSDSocketBase,a6
Move.l Socket,d0
lea Sockaddr_in,a0
Move.l #16,d1
Jsr TCP_Bind(a6)
Move.l D0,ret
Move.l Ret,d0
Cmp.l #-1,d0
Beq .pre0008
Bra .pre0009
.pre0008:
Move.l DOSBase,a6
Move.l #speechd___Bind_Error_xnname006,d1
Move.l #nullt,d2
Jsr vpf(a6)
Move.l BSDSocketBase,a6
Move.l Socket,d0
Jsr TCP_CloseSocket(a6)
Move.l rot3dbase,a6
Move.l mPort,a0
Jsr PortDown(a6)
Move.l #0,d0
RTS
.Pre0009:
.While0000:
Jsr GetSigs
Cmp.l #0,d0
Beq .pre0010
Bra .pre0011
.pre0010:
Move.l #16,d0
Move.l D0,Sockaddrlen
lea Zwischenpuffer,A0
Move.l #0,d0
Move.l #5000,d1
Jsr Fillbuffer
Move.l BSDSocketBase,a6
Move.l Socket,d0
lea ZwischenPuffer,a0
Move.l #3000,d1
Move.l #0,d2
lea Sockaddr_in,a1
lea sockaddrlen,a2
Jsr TCP_RecvFrom(a6)
Move.l D0,res1
Jsr TCP_Errno(a6)
Move.l D0,res2
Move.l res2,d0
Cmp.l #0,d0
Beq .pre0012
Move.l res1,d0
Cmp.l #-1,d0
Bgt .pre0012
Bra .pre0013
.pre0012:
Move.l DOSBase,a6
Move.l #speak_name007,d1
Move.l #MODE_OLD,d2
Jsr open(a6)
Move.l D0,sh
Cmp.l #0,d0
Bne .pre0014
Bra .pre0015
.pre0014:
Move.l DOSBase,a6
Move.l SH,d1
Move.l #Zwischenpuffer,d2
Move.l res1,d3
Jsr Write(a6)
Move.l SH,d1
Jsr close(a6)
.Pre0015:
.Pre0013:
Move.l ret,d0
Cmp.l #-1,d0
Beq .pre0016
Bra .pre0017
.pre0016:
Move.l DOSBase,a6
Move.l #25,d1
Jsr Delay(a6)
Move.l BSDSocketBase,a6
Jsr TCP_Errno(a6)
Move.l D0,RES
lea pf008,a0
move.l res,0000(a0)
Move.l DOSBase,a6
Move.l #speechd___Accept_Error_name008,d1
Move.l #pf008,d2
Jsr vpf(a6)
.Pre0017:
Bra .While0000
.Pre0011:
.While0001:
Move.l DOSBase,a6
Move.l #speechd___Dname009,d1
Move.l #nullt,d2
Jsr vpf(a6)
Move.l BSDSocketBase,a6
Move.l Socket,d0
Jsr TCP_CloseSocket(a6)
.Pre0007:
Move.l rot3dbase,a6
Move.l mPort,a0
Jsr PortDown(a6)
RTS
GetFilename:
cmpi.l #0,laenge
beq .l13
cmpi.l #1,laenge
beq .l13
suba.l a2,a2
suba.l a1,a1
Move.l Adresse,a0
.l1: cmpi.b #`"`,(a0)
beq .l10
cmpi.b #` `,(a0)+
beq .l1
lea -1(a0),a1
.l2: cmpi.b #`"`,(a0)
beq .l11
cmpi.b #$0a,(a0)
beq .l12
cmpi.b #$00,(a0)
beq .l12
cmpi.b #` `,(a0)+
bne .l2
Lea -1(a0),a2
.l3: suba.l a1,a2
move.l A0,NextArg
Move.l ExecBase,a6
Move.l a1,a0
Move.l #Filename,a1
Move.l a2,d0
Jsr Copymem(a6)
Move.l a2,d0
rts
.l10: lea 1(a0),a1
movea.l a1,a0
bra .l22
.l11: move.l a0,a2
bra .l3
.l12: move.l a0,a2
bra .l3
.l13: moveq.l #0,d0
RTS
.l22: cmpi.b #`"`,(a0)
beq .l11
cmpi.b #$0a,(a0)
beq .l12
cmpi.b #$00,(a0)
beq .l12
lea 1(a0),a0
bne .l22
CountString2:
move.l a1,-(Sp)
move.l a0,a1
.l1: cmpi.b #$0a,(a1)
beq .l2
cmpi.b #",",(a1)
beq .l2
cmpi.b #" ",(a1)
beq .l2
cmpi.b #$00,(a1)+
bne .l1
lea -1(a1),a1
.l2: sub.l a0,a1
move.l a1,d0
move.l (sp)+,a1
RTS
ASC2Zahl:
Move.l a5,a0
Jsr Countstring2
move.l d0,d7
subq.l #2,d7
move.l #1,d0
cmpi.w #$FFFF,d7
beq .la
.l0:mulu.l #10,d0
dbra d7,.l0
.la:move.l d0,d6
moveq.l #0,d1
move.l a5,a0
move.b #"+",d5
.l1:moveq.l #0,d0
move.b (A0)+,d0
cmpi.b #"-",d0
bne .l2
move.b d0,d5
Divs.l #10,d6
bra .l1
.l2:subi.b #$30,d0
andi.l #$FF,d0
Muls.l d6,d0
divs.l #10,d6
add.l d0,d1
cmpi.l #0,d6
bne .l1
lea 1(a0),a0
; move.l a0,NextArg
move.l d1,d0
cmpi.b #"+",d5
beq .l3
neg.l d0
.l3:RTS
Errorhandling:
Move.l Dosbase,d0
Cmp.l #0,d0
Beq .pre0000
Bra .pre0001
.pre0000:
Move.l ExecBase,a6
Move.l #dosname000,a1
Move.l #0,d0
Jsr Openlibrary(a6)
Move.l D0,Dosbase
Move.l DosBase,a1
Jsr CloseLibrary(a6)
.Pre0001:
Move.l DOSBase,a6
Jsr output(a6)
Move.l D0,Ausgabe
Move.l Error,d0
Cmp.l #1,d0
Beq .Pre0002
Bra .pre0003
.pre0002:
Move.l DOSBase,a6
Move.l Ausgabe,d1
Move.l #Allgemeiner_Fehlerxnname001,d2
Moveq.l #$13,d3
Jsr Write(a6)
.pre0003:
Move.l Error,d0
Cmp.l #2,d0
Beq .Pre0004
Bra .pre0005
.pre0004:
Move.l DOSBase,a6
Move.l Ausgabe,d1
Move.l #Konnte_File_nicht_findenxnname002,d2
Moveq.l #$19,d3
Jsr Write(a6)
.pre0005:
Move.l Error,d0
Cmp.l #3,d0
Beq .Pre0006
Bra .pre0007
.pre0006:
Move.l DOSBase,a6
Move.l Ausgabe,d1
Move.l #Window_Screen_Fehlerxnname003,d2
Moveq.l #$15,d3
Jsr Write(a6)
.pre0007:
Move.l Error,d0
Cmp.l #4,d0
Beq .Pre0008
Bra .pre0009
.pre0008:
lea PreassErrorTags,a0
move.l d7,0000(a0)
Move.l DOSBase,a6
Move.l Ausgabe,d1
Move.l #Library_nicht_gefunden__name004,d2
Move.l #PreassErrorTags,d3
Jsr VFWriteF(a6)
.pre0009:
Move.l Error,d0
Cmp.l #5,d0
Beq .Pre0010
Bra .pre0011
.pre0010:
Move.l DOSBase,a6
Move.l Ausgabe,d1
Move.l #Fehlerhafte_Eingabexnname005,d2
Moveq.l #$14,d3
Jsr Write(a6)
.pre0011:
Move.l Error,d0
Cmp.l #6,d0
Beq .Pre0012
Bra .pre0013
.pre0012:
Move.l DOSBase,a6
Move.l Ausgabe,d1
Move.l #Speicherfehlerxnname006,d2
Moveq.l #$0F,d3
Jsr Write(a6)
.pre0013:
RTS
Ausgabe: dc.l 0
even
dosname000: dc.b `dos.library`,0
even
Allgemeiner_Fehlerxnname001:
dc.b `Allgemeiner Fehler`,$a,``,0
even
Konnte_File_nicht_findenxnname002:
dc.b `Konnte File nicht finden`,$a,``,0
even
Window_Screen_Fehlerxnname003:
dc.b `Window|Screen Fehler`,$a,``,0
even
Fehlerhafte_Eingabexnname005:
dc.b `Fehlerhafte Eingabe`,$a,``,0
even
Speicherfehlerxnname006: dc.b `Speicherfehler`,$a,``,0
even
even
Library_nicht_gefunden__name004:
dc.b `Library nicht gefunden: %S`,$a,``,0
even
PreassErrorTags:
dc.l 0,0
even
Even
Freeremmalloc:
rts
Even
Openlibs:
Move.l $4.w,a6
Move.l #DOSname,a1
Moveq.l #0,d0
Jsr Openlibrary(a6)
Move.l d0,DOSbase
Tst.l D0
Beq.w .ende
Move.l #rot3dname,a1
Moveq.l #0,d0
Jsr Openlibrary(a6)
Move.l d0,rot3dbase
Tst.l D0
Beq.w .ende
Move.l #BSDSocketname,a1
Moveq.l #0,d0
Jsr Openlibrary(a6)
Move.l d0,BSDSocketbase
Tst.l D0
Beq.w .ende
rts
.ende: Move.l #4,error
Move.l a1,d7
rts
Closelibs:
Move.l $4.w,a6
Tst.l DOSbase
Beq.w .ende00
Move.l DOSbase,a1
Jsr Closelibrary(a6)
.ende00:Tst.l rot3dbase
Beq.w .ende01
Move.l rot3dbase,a1
Jsr Closelibrary(a6)
.ende01:Tst.l BSDSocketbase
Beq.w .ende02
Move.l BSDSocketbase,a1
Jsr Closelibrary(a6)
.ende02:Rts
even
WBmessage: dc.l 0
Laenge: dc.l 0
Adresse: dc.l 0
Error: dc.l 0
Addr: dc.l 0
Zeiger: dc.l 0
Signals: dc.l 0
UsePort: dc.l 0
MPort: dc.l 0
DeineNummer: dc.l 0
socket: dc.l 0
ret: dc.l 0
Sockaddrlen: dc.l 0
res1: dc.l 0
res2: dc.l 0
sh: dc.l 0
RES: dc.l 0
NextArg: dc.l 0
Potenz: dc.l 0
NONE: dc.l 0
DOSBase: dc.l 0
rot3dbase: dc.l 0
BSDSocketBase: dc.l 0
even
Version: dc.b "$VER: speechd 1.0 Cyborg 2001",0
even
sockaddr_in: blk.b 16,0
even
Sockaddr: blk.b 16,0
even
Portname: blk.b 20,0
even
_____name000:
dc.b `21846`,0
even
speechdname001: dc.b `speechd.`,0
even
Dname003: dc.b `Dämon läuft schon.`,$a,``,0
even
speechd_Port_NICHT_VERFname004:
dc.b `speechd Port NICHT VERFÜGBAR!`,$a,``,0
even
speechd_gestartetxnname005:
dc.b `speechd gestartet`,$a,``,0
even
speechd___Bind_Error_xnname006:
dc.b `speechd - Bind-Error `,$a,``,0
even
zwischenpuffer: blk.b 5000,0
even
speak_name007:
dc.b `speak:`,0
even
speechd___Accept_Error_name008:
dc.b `speechd - Accept-Error %ld`,$a,``,0
even
pf008:
dc.l res,0
speechd___Dname009:
dc.b `speechd - Dämon beendet sich jetzt`,$a,``,0
even
Filename: blk.b 256,0
even
Nullt: dc.b 0
DOSname: dc.b "dos.library",0
rot3dname: dc.b "rot3d.library",0
BSDSocketname: dc.b "bsdsocket.library",0
even
Include "Preass:LVO3.0/Exec_lib.i"
Include "Preass:LVO3.0/DOS_lib.i"
Include "Preass:LVO3.0/rot3d_lib.i"
Include "Preass:LVO3.0/BSDSocket_lib.i"